package canchaFulbito.negocio;


import java.sql.Date;
import java.util.Collection;



import canchaFulbito.dao.AlquilerDAO;
import canchaFulbito.dao.CanchaDAO;
import canchaFulbito.dao.ListadosDAO;
import canchaFulbito.dao.LocalDAO;
import canchaFulbito.dao.PersonaDAO;
import canchaFulbito.dao.ServicioDAO;
import canchaFulbito.excepcion.DAOExcepcion;
import canchaFulbito.modelo.Alquiler;
import canchaFulbito.modelo.Cancha;
import canchaFulbito.modelo.Distrito;
import canchaFulbito.modelo.Horario;
import canchaFulbito.modelo.Persona;
import canchaFulbito.modelo.Local;
import canchaFulbito.modelo.Rol;
import canchaFulbito.modelo.Servicio;
import canchaFulbito.modelo.TipoDocumento;

public class SeguridadNegocio {

	public void insertarPersona(String NomPersona,String NomPaterno,String NomMaterno,String Sexo,String NumDocumento,String NomEmail,String NomPass,String fechaNacimiento,String NumCelular,String Estado,int lTipoDocumento,int Rolid ) throws DAOExcepcion {

		Persona modelo = new Persona();
		PersonaDAO dao = new PersonaDAO();
		TipoDocumento oDocumento =new TipoDocumento();
		Rol oRol = new Rol();
		
		//modelo
		
		/*if (NomPersona!=null & NomPaterno!=null 
				& NomMaterno!=null & Sexo!=null & NumDocumento !=null & NomEmail!=null & NomPass  !=null 
				& FecNacimiento !=null & NumCelular !=null & Estado !=null & lTipoDocumento==0 & Rolid==0)
		{*/
			int id = dao.obtener_idPersona();

			System.out.print("eId :" + id);
			modelo.setIdPersona(id);
			modelo.setNomPersona(NomPersona);
			modelo.setNomPaterno(NomPaterno);
			modelo.setNomMaterno(NomMaterno);
			modelo.setSexo(Sexo);
			modelo.setNumDocumento(NumDocumento);
			modelo.setNomEmail(NomEmail);
			modelo.setNomPass(NomPass);
			modelo.setFecNacimiento(fechaNacimiento);
			modelo.setNumCelular(NumCelular);
			modelo.setEstado(Estado);

			/*private Collection<Local> oLocal;
			private Rol oRol;
			private TipoDocumento oTipoDocumento;
			*/
			System.out.print("Seguridad Negocio lTipoDocumento :" + lTipoDocumento);
			oDocumento.setIdTipo(lTipoDocumento);
			
			oRol.setIdrol(Rolid);
			
			modelo.setoRol(oRol);
			modelo.setoTipoDocumento(oDocumento);
			
			dao.obtener(NumDocumento, NomEmail);
			dao.insertar(modelo);
			
		//}
	}
	
	public void insertarAlquiler(int idAlquiler, String fecAlquiler,int Horario_idHorario,int cancha_idCancha,int servicio_idServicio ) throws DAOExcepcion {

		Alquiler modelo = new Alquiler();
	
		Servicio oServicio = new Servicio();
		Cancha oCancha = new Cancha();
		Horario oHorario = new Horario();
		
		modelo.setIdAlquiler(idAlquiler);
		modelo.setFecAlquiler(fecAlquiler);
		
		oCancha.setIdCancha(cancha_idCancha);
		modelo.setoCancha(oCancha);
		
		oServicio.setIdServicio(servicio_idServicio);
		modelo.setoServicio(oServicio);
		
		oHorario.setIdHorario(Horario_idHorario);
		modelo.setoHorario(oHorario);
		
		AlquilerDAO dao = new AlquilerDAO();
		dao.obtener(cancha_idCancha);
		dao.insertar(modelo);
	}
	
	public int insertarLocal(String NomLocal,String NomDireccion,String UrlGoogleMaps,String NumTelefono,int Ciudad_idCiudad,int Persona_IdPersona ) throws DAOExcepcion {

		Local modelo = new Local();
		Persona oPersona = new Persona();
		Distrito oDistrito =new Distrito();
		LocalDAO dao = new LocalDAO();
		int ok=0;
		
		//modelo.setIdLocal(IdLocal);
		int id = dao.obtener_idLocal();
		modelo.setIdLocal(id);
		modelo.setNomLocal(NomLocal);
		modelo.setNomDireccion(NomDireccion);
		modelo.setUrlGoogleMaps(UrlGoogleMaps);
		modelo.setNumTelefono(NumTelefono);
		
		oPersona.setIdPersona(Persona_IdPersona);
		oDistrito.setIdDistrito(Ciudad_idCiudad);
		
		modelo.setoDistrito(oDistrito);
		modelo.setoPersona(oPersona);
		
		ok = dao.obtener(NomLocal);
		if (ok != 1)
		{
			
			dao.insertar(modelo);
			ok = 1;
		}
			return ok;
		}
			

	
	public int insertarServicio(String NomServicio,String Descripcion,Double lCosto) throws DAOExcepcion {
		
		int valida=0;
		Servicio modelo = new Servicio();
		ServicioDAO dao = new ServicioDAO();
				if(NomServicio!=null & Descripcion!=null & lCosto>0)
				{
					int id = dao.obtener_idServicio();
					modelo.setIdServicio(id);
					modelo.setNomServicio(NomServicio);
					modelo.setDescripcion(Descripcion);
					modelo.setCosto(lCosto);				
					
					System.out.print("id" + id);
					dao.insertar(modelo);
					
					System.out.print("OK");
					valida=0;
					
				}
				if(NomServicio==null || Descripcion==null || lCosto==null)
				{
						valida=1;
						System.out.print("entro aqui vacios"+"\n");
				}
				return valida;
		}

	public String insertarCancha(String NomCancha, String Caracteristicas, String Foto, int oLocal, String nomHorario, String diaAtencion, String hora1, String hora2, String promocion, Double tarifa) throws DAOExcepcion{
		String mensaje="";
		Cancha modelo = new Cancha();
		Local objlocal = new Local();
		
		
			modelo.setNomCancha(NomCancha);
			modelo.setCaracteristicas(Caracteristicas);
			modelo.setFoto(Foto);
			modelo.setDiaAtencion(diaAtencion);
			modelo.setHora1(hora1);
			modelo.setHora2(hora2);
			modelo.setNonHorario(nomHorario);
			modelo.setPromocion(promocion);
			modelo.setTarifa(tarifa);
			
			objlocal.setIdLocal(oLocal);
			
			modelo.setoLocal(objlocal);
			
			if( ValidarDatos(modelo)== true )
			 {							
				if (obtener(NomCancha, oLocal)== true)
				 {
					CanchaDAO objDaoCancha = new CanchaDAO();
					mensaje = objDaoCancha.insertar(modelo);
					
				 }else{
					 mensaje="<div id='error'>Nombre de la cancha ya esta registrado</div>";
				 }
				
				
			 }else{
				 mensaje="<div id='error'>Hace falta agregar datos necesarios para completar el registro</div>";
			 }	
		return mensaje;
	}
	/*
	public Collection<Cancha> buscarCancha(int Distrito, String dia, String hora) throws DAOExcepcion{
		CanchaDAO dao = new CanchaDAO();
		return dao.buscar(Distrito,dia,hora);
	}
	*/
	//dasmat
	
	public Collection<Persona> obtener_usuario(String Email, String pass)  throws DAOExcepcion{
		PersonaDAO dao = new PersonaDAO();
		return dao.obtener_usuario(Email,pass);
	}
	
	public Collection<Distrito> ListarDistrito()  throws DAOExcepcion{
		ListadosDAO dao = new ListadosDAO();
		return dao.ListarDistrito();
	}
	/*
	public Collection<Cancha> ListarCanchasDispon(String Dia,String Hora1,String Hora2, String codDistrito) throws DAOExcepcion {
		ListadosDAO dao = new ListadosDAO();
		Collection<Cancha> Cancha =dao.ListarCanchas(Dia,Hora1, Hora2, codDistrito);
        return Cancha;
    }*/
	public Collection<Local> ListarLocal(int idPersona) throws DAOExcepcion {
		ListadosDAO dao = new ListadosDAO();
		Collection<Local> local =dao.ListarLocal(idPersona);
        return local;
    }
	public Collection<Servicio> ListarServicio() throws DAOExcepcion {
		ListadosDAO dao = new ListadosDAO();
		Collection<Servicio> servicio =dao.ListarServicios();
        return servicio;
    }
	
	public Collection<Cancha> buscarCancha(int Distrito, String dia1, String dia2, String hora1, String hora2) throws DAOExcepcion{
		CanchaDAO dao = new CanchaDAO();
		return dao.buscar(Distrito,dia1,dia2,hora1,hora2);
	}
	public Collection<Local> buscarLocal(int idPersona) throws DAOExcepcion{
		ListadosDAO dao = new ListadosDAO();
		return dao.ListarLocalCombo(idPersona);
	}
	
	
	public boolean ValidarDatos(Cancha objCancha)
	{
		boolean sw=true;
		if (objCancha.getNomCancha().isEmpty())
		{
			sw= false;
		}else{
			sw=true;
		}
		return sw;
	}
	
	public boolean obtener(String nombreCancha, int local) throws DAOExcepcion{
		CanchaDAO objDaoCancha = new CanchaDAO();
		 return objDaoCancha.obtener(nombreCancha, local);
	}
	
	/*
	public Collection<Cancha> ListarDistritosCanchas(int IdPersona) throws DAOExcepcion {
		ListadosDAO dao = new ListadosDAO();
		Collection<Cancha> canchas =dao.ListadoDistritoCanchas(IdPersona);
        return canchas;
    }
    */
}
